﻿#region Copyright(c) 2006 ZO, All right reserved.
// -----------------------------------------------------------------------------
// Copyright(c) 2006 ZO, All right reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
//   1.  Redistribution of source code must retain the above copyright notice,
//       this list of conditions and the following disclaimer.
//   2.  Redistribution in binary form must reproduce the above copyright
//       notice, this list of conditions and the following disclaimer in the
//       documentation and/or other materials provided with the distribution.
//   3.  The name of the author may not be used to endorse or promote products
//       derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
#endregion


#region Using directives
using System;



#endregion

namespace ZO.SmartCore.Protocols.XMPP.Core
{
    /// <summary>
    /// Represents the current state of a XMPP Connection 
    /// </summary>
    [Flags]
    public enum XmppConnectionState
    {
        /// <summary>
        /// Socket is not initailized(connect method is never called)
        /// </summary>
        NotInitialized = 0,

        /// <summary>
        /// Socket is Disconnecting
        /// </summary>
        Disconnecting,

        /// <summary>
        /// Socket is Disconnected 
        /// </summary>
        Disconnected,

        /// <summary>
        /// The Socket is Connecting 
        /// </summary>
        Connecting,

        /// <summary>
        /// The Socket is Connected 
        /// </summary>
        Connected,

        ///// <summary>
        ///// The XMPP Session is authenticating 
        ///// </summary>
        //Authenticating,

        ///// <summary>
        ///// The XMPP session is authenticated 
        ///// </summary>
        //Authenticated,

        ///// <summary>
        ///// Resource Binding gets started 
        ///// </summary>
        //Binding,

        ///// <summary>
        ///// Resource Binded with success 
        ///// </summary>
        //Binded,

        ///// <summary>
        ///// Initializing Session
        ///// </summary>
        //StartSession,

        ///// <summary>
        ///// Initialize Stream Compression 
        ///// </summary>
        //StartCompression,

        ////// <summary>
        ////// Stream is compressed now 
        ////// </summary>
        //Compressed,

        ///// <summary>
        ///// Session is started successfully
        ///// </summary>
        //SessionStarted,

        /// <summary>
        /// We are switching from a normal connection to a secure SSL connection (StartTLS) 
        /// </summary>
        Securing,

        /// <summary>
        /// We are sucessfulyy switched from a normal connection to a secure SSL connection (StartTLS) 
        /// </summary>
        Secured,

        ///// <summary>
        ///// started the progress to register a new account 
        ///// </summary>
        //Registering,

        ///// <summary>
        ///// Account was registered successful 
        ///// </summary>
        //Registered
    }
}
